home *** CD-ROM | disk | FTP | other *** search
/ Utilities Professional 1-1500 / Utilities Professional 1-1500 (1994)(WPD)[!].iso / 12511500 / var1463.dms / var1463.adf / BBBBS72.lha / rexx / ArcBrowse.rexx < prev    next >
OS/2 REXX Batch file  |  1994-02-12  |  8KB  |  322 lines

  1. /*        $VER: ArcBrowse.rexx 6.7 (12.2.94)
  2. archives user defined browselist into file in users email
  3. it receives its arguments from rexxDoors/Make_BrowseList.rexx
  4.     © 1990-94 Richard Lee Stockton - FREELY DISTRIBUTABLE
  5. */
  6.  
  7. CALL TIME('R')
  8. SIGNAL ON ERROR
  9. SIGNAL ON SYNTAX
  10. OPTIONS FAILAT 999999
  11.  
  12. PARSE ARG name lastbrowse alphaflag libflag liblist 
  13. lastbrowse=STRIP(lastbrowse)
  14.  
  15. CALL CLOSE(STDOUT)
  16. CALL OPEN(STDOUT,'RAM:ArcBrowse.STDOUT','W')
  17. SAY STRIP(SUBSTR(SOURCELINE(1),3))
  18. SAY
  19.  
  20. IF ~DATATYPE(lastbrowse,'N') | name='' | alphaflag='' | libflag='' | liblist='' THEN
  21.   CALL GETOUT(20)
  22.  
  23. figarg='s:CONFIG.BBS'
  24. IF ~EXISTS(figarg) THEN figarg='BBS:BBS_TEXT/CONFIG.BBS'
  25. x=OPEN(f,figarg,'R')
  26. IF x=0 THEN
  27.   DO
  28.     SAY 's:CONFIG.BBS and BBS:BBS/CONFIG.BBS are both missing!'
  29.     CALL GETOUT(21)
  30.   END
  31. lynes.=''
  32. DO i=1 TO 33
  33.   lynes.i=READLN(f)
  34. END
  35. CALL CLOSE(f)
  36.  
  37. compos=POS('/*',lynes.1)
  38. IF compos>0 THEN lynes.1=LEFT(lynes.1,compos-1)
  39. bbsname = STRIP(lynes.1)
  40.  
  41. sysop   = WORD(lynes.2,1)
  42.  
  43. bbspath = WORD(lynes.6,1)
  44. IF ~EXISTS(bbspath) THEN
  45.   DO
  46.     SAY bbspath 'does not exist!'
  47.     CALL GETOUT(22)
  48.   END
  49. testchar=RIGHT(bbspath,1)
  50. IF testchar~='/' & testchar~=':' THEN bbspath=bbspath'/'
  51.  
  52. DO i=1
  53.   IF GETCLIP('BBS_BROWSE'i)='' THEN  /* info clip for external STOP */
  54.     DO
  55.       CALL SETCLIP('BBS_BROWSE'i,name)
  56.       CALL SETCLIP('BBS_STOP_BROWSE'i)
  57.       clipnum=i
  58.       LEAVE i
  59.     END
  60. END
  61.  
  62. CALL PRAGMA('P',-4)         /* lower the priority of this task */
  63.  
  64. extension=WORD(lynes.32,1)
  65. compos=POS('/*',lynes.33)
  66. IF compos>0 THEN lynes.33=LEFT(lynes.33,compos-1)
  67. arccom=STRIP(lynes.33)
  68. IF LEFT(extension,1)~='.' THEN
  69.   DO
  70.     extension='.lzh'
  71.     arccom='lha -m m'
  72.   END
  73.  
  74. filepath=bbspath'EmailFiles/'name
  75. CALL MAKEDIR(filepath)
  76. IF GETCLIP('BBS_'name)~='' THEN browsename=filepath'/FileList'
  77. ELSE
  78.   DO
  79.     x=OPEN(f,bbspath'Numbers/LastMail','R')
  80.     IF x~=0 THEN lastm=READLN(f)+1
  81.     CALL CLOSE(f)
  82.     ADDRESS COMMAND 'ECHO >'bbspath'Numbers/LastMail 'lastm
  83.     browsename=filepath'/BBBBS_'lastm
  84.   END
  85. filelistname=bbspath'Lists/Files'
  86. filelist.=''
  87. x=OPEN(f,filelistname,'R')
  88. IF x=0 THEN CALL GETOUT(23)
  89. DO i=1
  90.   line=READLN(f)
  91.   IF EOF(f) THEN LEAVE i
  92.   indx=WORD(line,1)
  93.   IF DATATYPE(indx,'N') THEN filelist.indx=line
  94. END
  95. filelist.0=indx
  96. CALL CLOSE(f)
  97. numba=filelist.0
  98.  
  99. IF alphaflag='A' THEN
  100.   DO
  101.     filelistname=filelistname'.ALPHA'
  102.     alphalist.=''
  103.     x=OPEN(f,filelistname,'R')
  104.     IF x=0 THEN CALL GETOUT(24)
  105.     DO i=1
  106.       line=READLN(f)
  107.       IF EOF(f) THEN LEAVE i
  108.       alphalist.i=line
  109.     END
  110.     alphalist.0=i-1
  111.     CALL CLOSE(f)
  112.     numba=alphalist.0
  113.   END
  114.  
  115. oldt=0
  116. count=0
  117. archives=1
  118. CALL open_browse()
  119.  
  120. IF libflag='A' THEN CALL noteloop(1)
  121. ELSE IF libflag='L' THEN
  122.   DO j=1 TO WORDS(liblist)
  123.     test1=WORD(liblist,j)
  124.     CALL noteloop(0)
  125.   END
  126.  
  127. IF WORD(STATEF(browsename),2)<80 THEN CALL GETOUT(26)
  128. IF GETCLIP('BBS_'name)~='' THEN CALL GETOUT(0)
  129. CALL write_msg()
  130. CALL GETOUT(0)
  131. EXIT
  132.  
  133.  
  134.  
  135. add_note:
  136. ARG addname
  137. count=count+1
  138. IF count//5=0 THEN
  139.   DO
  140.     t=GETCLIP('BBS_STOP_BROWSE'clipnum)
  141.     IF t~='' THEN CALL cleanup(t)
  142.   END
  143. finfo=STATEF(browsename)
  144. IF WORD(finfo,2)>1400000 THEN
  145.   DO
  146.     x=OPEN(a,browsename,'A')
  147.     IF x=0 THEN CALL GETOUT(33)
  148.     CALL WRITELN(a,'')
  149.     CALL WRITELN(a,CENTER('=== continued in part' archives+1'. ===',75))
  150.     CALL CLOSE(a)
  151.     CALL DELAY(50)
  152.     IF GETCLIP('BBS_'name)~='' THEN
  153.       DO
  154.         IF EXISTS('FileList') THEN CALL RENAME('FileList','List1')
  155.         browsename=filepath'/List'archives+1
  156.       END
  157.     ELSE
  158.       DO
  159.         CALL write_msg()
  160.         x=OPEN(f,bbspath'Numbers/LastMail','R')
  161.         IF x~=0 THEN lastm=READLN(f)+1
  162.         ELSE lastm=lastm+1
  163.         CALL CLOSE(f)
  164.         ADDRESS COMMAND 'echo >'bbspath'Numbers/LastMail 'lastm
  165.         browsename=filepath'/BBBBS_'lastm
  166.       END
  167.     archives=archives+1
  168.     CALL open_browse()
  169.   END
  170. x=OPEN(a,browsename,'A')
  171. IF x=0 THEN CALL GETOUT(30)
  172. CALL WRITELN(a,'=====')
  173. x=OPEN(b,addname,'R')
  174. IF x=0 THEN CALL WRITELN(a,addname 'failed to open for reading!')
  175. ELSE
  176.   DO
  177.     data=READCH(b,65000)
  178.     CALL CLOSE(b)
  179.     CALL WRITECH(a,data)
  180.   END
  181. CALL WRITELN(a,'')
  182. CALL CLOSE(a)
  183. RETURN
  184.  
  185.  
  186. write_msg:
  187. IF GETCLIP('BBS_'name)~='' THEN RETURN
  188. CALL PRAGMA('P',0)         /* normal priority */
  189. ADDRESS COMMAND arccom browsename||extension browsename
  190. IF ~EXISTS(browsename||extension) THEN CALL GETOUT(27)
  191. CALL PRAGMA('P',-4)
  192. x=OPEN(f,bbspath'Email/'name'/BBBBS.'lastm,'W')
  193. IF x=0 THEN CALL GETOUT(28)
  194. CALL WRITELN(f,' Mail: 'lastm'   FILE: BBBBS_'lastm||extension)
  195. CALL WRITELN(f,' From: BBBBS')
  196. CALL WRITELN(f,'   To: 'name)
  197. temp='BrowseList'
  198. IF WORD(finfo,2)>1400000 THEN temp=temp', part' archives
  199. CALL WRITELN(f,' Subj:' temp)
  200. CALL WRITELN(f,' Date: 'DATE('W') DATE() TIME('C'))
  201. CALL WRITELN(f,LEFT('=',75,'='))
  202. temp='Here are the file descriptions you requested'
  203. IF WORD(finfo,2)>1400000 THEN temp=temp', part' archives
  204. CALL WRITELN(f,temp'.')
  205. t=(.5+TIME('E'))%1
  206. t=t-oldt
  207. oldt=t+oldt
  208. min=t%60
  209. hrs=min%60
  210. min=min//60
  211. sec=t//60
  212. temp='It took'
  213. IF hrs>1 THEN temp=temp hrs 'hours'
  214. ELSE IF hrs=1 THEN temp=temp '1 hour'
  215. IF min>1 THEN temp=temp min 'minutes'
  216. ELSE IF min=1 THEN temp=temp '1 minute'
  217. IF sec=1 THEN temp=temp '1 second'
  218. ELSE IF sec>0 THEN temp=temp sec 'seconds'
  219. temp=temp 'to compile these descriptions.'
  220. CALL WRITELN(f,temp)
  221. CALL CLOSE(f)
  222. newmess='Your archived filelist is waiting in Email.'
  223. IF GETCLIP('BBS_level')~='' & WORD(GETCLIP('BBS_lastcaller'),1)=name THEN
  224.   DO
  225.     oldmess=GETCLIP('BBS_MESSAGE')
  226.     IF oldmess~='' THEN oldmess=oldmess||'0D0A'x
  227.     CALL SETCLIP('BBS_MESSAGE',oldmess||newmess)
  228.   END
  229. IF GETCLIP('BBS_LOCAL')=name THEN CALL SETCLIP('BBS_LOCAL_MSG',newmess)
  230. RETURN
  231.  
  232.  
  233. open_browse:
  234. x=OPEN(a,browsename,'W')
  235. IF x=0 THEN CALL GETOUT(25)
  236. IF alphaflag='A' THEN temp='alphabetical'
  237. ELSE temp='aged'
  238. title='=' bbsname temp 'file descriptions'
  239. IF libflag='L' THEN title=title 'by library'
  240. IF archives>1 THEN title=title', part' archives
  241. CALL WRITELN(a,title)
  242. CALL WRITELN(a,'= Custom archived for' name'  'DATE() TIME('C'))
  243. CALL WRITELN(a,'')
  244. CALL CLOSE(a)
  245. IF GETCLIP('BBS_'name)='' THEN
  246.   DO
  247.     x=OPEN(f,bbspath'Email/'name'/BBBBS.'lastm,'W')
  248.     IF x=0 THEN CALL GETOUT(28)
  249.     CALL WRITELN(f,' Mail: 'lastm'   FILE: BBBBS_'lastm)
  250.     CALL WRITELN(f,' From: BBBBS')
  251.     CALL WRITELN(f,'   To: 'name)
  252.     CALL WRITELN(f,' Subj: BrowseList')
  253.     CALL WRITELN(f,' Date: 'DATE('W') DATE() TIME('C'))
  254.     CALL WRITELN(f,LEFT('=',75,'='))
  255.     CALL WRITELN(f,'Here are the file descriptions you requested.')
  256.     CALL WRITELN(f,'The collection process was interrupted.')
  257.     CALL CLOSE(f)
  258.   END
  259. RETURN
  260.  
  261.  
  262. noteloop:
  263. ARG nflag .
  264. IF alphaflag='A' THEN
  265.   DO i=1 TO numba
  266.     k=i
  267.     k=STRIP(WORD(alphalist.i,3))
  268.     IF filelist.k='' | lastbrowse>=k THEN ITERATE i
  269.     lname=WORD(filelist.k,2)
  270.     fname=WORD(filelist.k,3)
  271.     IF nflag THEN
  272.       DO
  273.         IF FIND(UPPER(liblist),UPPER(lname))=0 THEN ITERATE i
  274.       END
  275.     ELSE IF UPPER(test1)~=UPPER(lname) THEN ITERATE i
  276.     CALL add_note(bbspath'FileNotes/'lname'/'fname)
  277.   END
  278. ELSE
  279.   DO i=numba TO 1 BY -1
  280.     IF filelist.i='' | lastbrowse>=i THEN ITERATE i
  281.     lname=WORD(filelist.i,2)
  282.     fname=WORD(filelist.i,3)
  283.     IF nflag THEN
  284.       DO
  285.         IF FIND(UPPER(liblist),UPPER(lname))=0 THEN ITERATE i
  286.       END
  287.     ELSE IF UPPER(test1)~=UPPER(lname) THEN ITERATE i
  288.     CALL add_note(bbspath'FileNotes/'lname'/'fname)
  289.   END
  290. RETURN
  291.  
  292.  
  293. cleanup:
  294. ARG t2 .
  295. SAY 'User aborted!'
  296. IF t2='DELETE' THEN
  297.   DO
  298.     IF GETCLIP('BBS_'name)~='' THEN
  299.       DO
  300.         CALL DELETE(bbspath'EmailFiles/'name'/FileList')
  301.         ADDRESS COMMAND 'c:delete' bbspath'EmailFiles/'name'/List#?'
  302.       END
  303.     ELSE ADDRESS COMMAND 'c:delete' LEFT(browsename,LENGTH(browsename)-4)'#?'
  304.   END
  305. CALL GETOUT(0)
  306. RETURN
  307.  
  308.  
  309. ERROR:
  310. SYNTAX:
  311.  
  312. GETOUT:
  313. ARG errorout
  314. CALL SETCLIP('BBS_BROWSE')
  315. CALL SETCLIP('BBS_BROWSE'clipnum)
  316. CALL SETCLIP('BBS_STOP_BROWSE'clipnum)
  317. IF errorout>0 THEN SAY 'ArcBrowse error' errorout'!'
  318. EXIT(errorout)
  319.  
  320.  
  321. /* ArcBrowse.rexx */
  322.